﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MvcApplication1.Models;

namespace Ligas.Tests.Fakes
{
    class FakeRepositorioPartido : FakeRepositorioBase , IRepositorioPartidos
    {
        private List<Partido> partidos;

        public FakeRepositorioPartido(List<Partido> partidos)
        {
            this.partidos = partidos;
        }

        public void AgregarPartido(Partido partido)
        {
            partidos.Add(partido);
        }

        public void AgregarPartidos(IEnumerable<Partido> partidos)
        {
            this.partidos.AddRange(partidos);
        }

        public void EliminarPartido(Partido p)
        {
            partidos.Remove(p);
        }

        public Partido GetPartido(int idPartido)
        {
            return partidos.SingleOrDefault(d => d.IDPartido == idPartido);
        }

        public IQueryable<Partido> PartidosJugados()
        {
            IQueryable<Partido> partidosIQ = partidos.AsQueryable();
            return from partido in partidosIQ
                   where partido.Fecha < DateTime.Now
                   orderby partido.Fecha
                   select partido;
        }

        public IQueryable<Partido> ProximosPartidos()
        {
            IQueryable<Partido> partidosIQ = partidos.AsQueryable();
            return from partido in partidosIQ
                   where partido.Fecha > DateTime.Now
                   orderby partido.Fecha
                   select partido;
        }

        public IQueryable<Partido> TodosPartidos()
        {
            return partidos.AsQueryable();
        }

        public override void Save()
        {
            foreach (Partido p in partidos)
                if (!p.EsValido)
                    throw new ApplicationException("Violacion de Reglas");
        }


        public List<Partido> PartidosPorFecha(Liga l, int IDFecha)
        {
            throw new NotImplementedException();
        }
    }
}
